home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C / Libraries / stdwin / Appls / dpv / dpvmachine.h < prev    next >
Encoding:
C/C++ Source or Header  |  1988-11-17  |  2.3 KB  |  87 lines  |  [TEXT/????]

  1. /* dpv -- ditroff previewer.  Definitions for ditroff virtual machine. */
  2.  
  3. /* The ditroff machine has the following state information:
  4.  
  5.    Basic state:
  6.    - hpos, vpos        print head position on current page
  7.    - size        current point size
  8.    - font        current font number (range 0..NFONTS-1)
  9.    
  10.    Environment:
  11.    - a stack containing up to MAXSTATE copies of the basic state
  12.    
  13.    Mounted font table:
  14.    - a mapping from font number to (ditroff) font names
  15.      (i.e., which font is mounted on which logical position)
  16.    
  17.    Page info:
  18.    - current page number
  19.    
  20.    Global info (not used much):
  21.    - typesetter name
  22.    - resolution assumed when preparing
  23.    - page dimensions
  24.    - etc.?
  25.    
  26.    To restart the machine at a given page, we need to save and restore
  27.    the basic state, environment and mounted font table.
  28.    It could be argued that at page boundaries the environment stack
  29.    should be empty, and that the mounted font table should be initialized
  30.    once and for ever.
  31.    The latter isn't the case in practice; ".fp" requests can be and are
  32.    used anywhere in ditroff source files.
  33.    Because the environment pushes the (page-relative) position, it is
  34.    unlikely that restoring an environment on a different page makes any
  35.    sense, so we could assume this (and check that the input conforms).
  36. */
  37.  
  38. /* Array dimensions */
  39.  
  40. #define    NFONTS   65    /* total number of fonts usable */
  41. #define    MAXSTATE 6    /* number of environments rememberable */
  42.  
  43. /* Basic state */
  44.  
  45. extern int    hpos;    /* horizontal position we are to be at next; left=0 */
  46. extern int    vpos;    /* current vertical position (down positive) */
  47. extern int    size;    /* current point size */
  48. extern int    font;    /* current font */
  49.  
  50. #define  hmot(n)    hpos += n
  51. #define  hgoto(n)    hpos = n
  52. #define  vmot(n)    vgoto(vpos + (n))
  53. extern vgoto();
  54.  
  55. /* Environment */
  56.  
  57. struct state {
  58.     int    ssize;
  59.     int    sfont;
  60.     int    shpos;
  61.     int    svpos;
  62. };
  63.  
  64. extern struct    state    state[MAXSTATE];
  65. extern struct    state    *statep;
  66.  
  67. extern t_push();
  68. extern t_pop();
  69.  
  70. /* Mounted font table */
  71.  
  72. typedef struct _fontinfo {
  73.     char *name[NFONTS];
  74. } fontinfo;
  75.  
  76. extern fontinfo fonts;    /* current mounted font table */
  77. extern int    nfonts;    /* number of used entries (0..nfonts-1) */
  78.  
  79. /* Page info */
  80.  
  81. extern int    ipage;    /* internal page number */
  82.  
  83. /* Global typesetter info */
  84.  
  85. extern int    res;    /* resolution for which input was prepared */
  86.             /* default is old troff resolution */
  87.